#ifndef SHADER_H
#define SHADER_H

#include "../Geometry/VertToFrag.h"
#include "../Geometry/Vertex.h"
#include "../MathUtil/Vector.h"
#include "../MathUtil/Matrix.h"

namespace z_shader {
	class BaseShader
	{
	public:
		virtual z_v2f::VertToFrag vertexShader(const z_vertex::Vertex& vex) = 0;
		virtual z_vector::Vector4f fragmentShader(const z_v2f::VertToFrag& v2f) = 0;

		z_matrix::Matrix4x4 matTransform;	//model To world
		z_matrix::Matrix4x4 matView;		//world To view
		z_matrix::Matrix4x4 matProject;		//view To project
	};


	class TwoDShader : public BaseShader{
	public:
		TwoDShader();
		~TwoDShader();

		virtual z_v2f::VertToFrag vertexShader(const z_vertex::Vertex& vex);
		virtual z_vector::Vector4f fragmentShader(const z_v2f::VertToFrag& v2f);
	private:

	};
};



#endif // !SHADER_H

